To be able to edit code and run cells, you need to run the notebook yourself. Where would you like to run the notebook?

In the cloud (experimental)

Binder is a free, open source service that runs scientific notebooks in the cloud! It will take a while, usually 2-7 minutes to get a session.

On your computer

(Recommended if you want to store your changes.)

  1. Copy the notebook URL:
  2. Run Pluto

    (Also see: How to install Julia and Pluto)

  3. Paste URL in the Open box

Frontmatter

If you are publishing this notebook on the web, you can set the parameters below to provide HTML metadata. This is useful for search engines and social media.

Author 1
getfirst (generic function with 1 method)
👀 Reading hidden code
function getfirst(f::Function, xs)
for x in xs
if f(x)
return x
end
end
error("Not found")
end
828 μs
👀 Reading hidden code
import Pkg
199 μs
👀 Reading hidden code
try
global result = update_nbpkg(ctx, packages_i_want)
catch e
global result_err = e
end
893 ms
👀 Reading hidden code
packages_i_want = ["SpecialFunctions"]# , "DataArrays"]
12.8 μs
Error message

SystemError: opening file "/tmp/jl_2IML99/Project.toml": No such file or directory

Stack trace

Here is what happened, the most recent locations are first:

  1. systemerror(p::String, errno::Int32; extrainfo::Nothing)
  2. #systemerror#68
  3. systemerror
  4. open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
  5. open
  6. open(f::Base.var"#364#365"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    from io.jl:328
  7. open
    from io.jl:328
  8. read(filename::String, #unused#::Type{String})
    from io.jl:436
  9. 		Text(read(ctx.env.project_file, String))end
let
try result catch end
Text(read(ctx.env.project_file, String))
end
👀 Reading hidden code
---
Error message

UndefVarError: result not defined

Stack trace

Here is what happened, the most recent locations are first:

  1. let	result	sort([e.name => e.version for e in values(ctx.env.manifest)]; by=first)
Keep calm, you got this!
let
result
sort([e.name => e.version for e in values(ctx.env.manifest)]; by=first)
end
👀 Reading hidden code
---
Error message

SystemError: opening file "/tmp/jl_2IML99/Manifest.toml": No such file or directory

Stack trace

Here is what happened, the most recent locations are first:

  1. systemerror(p::String, errno::Int32; extrainfo::Nothing)
  2. #systemerror#68
  3. systemerror
  4. open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
  5. open
  6. open(f::Base.var"#364#365"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    from io.jl:328
  7. open
    from io.jl:328
  8. read(filename::String, #unused#::Type{String})
    from io.jl:436
  9. 		Text(read(ctx.env.manifest_file, String))end
let
try result catch end
Text(read(ctx.env.manifest_file, String))
end
👀 Reading hidden code
---
true
Pkg.PRESERVE_ALL < Pkg.PRESERVE_NONE
👀 Reading hidden code
3.0 ms
PRESERVE_DIRECT::PreserveLevel = 1
Pkg.PreserveLevel(Int64(Pkg.PRESERVE_ALL) + 1)
👀 Reading hidden code
7.4 ms
tiers = [
Pkg.PRESERVE_ALL,
Pkg.PRESERVE_DIRECT,
Pkg.PRESERVE_SEMVER,
Pkg.PRESERVE_NONE,
]
👀 Reading hidden code
9.1 ms
i = iterate(tiers, 4)
👀 Reading hidden code
14.6 μs

👀 Reading hidden code
66.9 μs
update_nbpkg (generic function with 1 method)
function update_nbpkg(ctx, new_packages)
if ctx !== nothing
new_packages = String.(new_packages)
removed = setdiff(keys(ctx.env.project.deps), new_packages)
added = setdiff(new_packages, keys(ctx.env.project.deps))
to_remove = filter(removed) do p
haskey(ctx.env.project.deps, p)
end
if !isempty(to_remove)
Pkg.rm(ctx, [
Pkg.PackageSpec(name=p)
for p in to_remove
])
end
local used_tier = Pkg.PRESERVE_ALL
to_add = added
if !isempty(to_add)
for tier in [
Pkg.PRESERVE_ALL,
Pkg.PRESERVE_DIRECT,
Pkg.PRESERVE_SEMVER,
Pkg.PRESERVE_NONE,
]
used_tier = tier
try
Pkg.add(ctx, [
Pkg.PackageSpec(name=p)
for p in to_add
]; preserve=used_tier)
break
catch e
if used_tier == Pkg.PRESERVE_NONE
# give up
rethrow(e)
end
end
end
# for p in to_add
# entry = first(e -> e.name == p, values(ctx.env.manifest))
# if entry.version !== nothing
# ctx.env.project.compat[p] = "^" * string(entry.version)
# end
# end
# Pkg.Types.write_env(ctx.env)
end
end
(used_tier=used_tier,
# changed_versions=Dict{String,Pair}(),
restart_recommended=(!isempty(to_remove) || used_tier != Pkg.PRESERVE_ALL),
restart_required=(used_tier ∈ [Pkg.PRESERVE_SEMVER, Pkg.PRESERVE_NONE]),)
end
👀 Reading hidden code
5.0 ms
Error message

Not found

Stack trace

Here is what happened, the most recent locations are first:

  1. error(s::String)
  2. getfirst(f::Main.workspace#2.var"#7#8"{String}, xs::Base.ValueIterator{Dict{Base.UUID, Pkg.Types.PackageEntry}})
    		end	end	error("Not found")end
  3. Show more...
C'est la vie !
entry = get_manifest_entry(ctx, first(packages_i_want))
👀 Reading hidden code
---
get_manifest_entry (generic function with 1 method)
get_manifest_entry(ctx::Pkg.Types.Context, pkg_name::String) =
getfirst(e -> e.name == pkg_name, values(ctx.env.manifest))
👀 Reading hidden code
1.0 ms
let
try result catch end
ctx.env
end
👀 Reading hidden code
290 μs
ctx = Pkg.Types.Context(env=Pkg.Types.EnvCache(joinpath(mktempdir(),"Project.toml")))
👀 Reading hidden code
21.8 ms
"/tmp/jl_2IML99"
ctx.env.project_file |> dirname
👀 Reading hidden code
2.8 ms
"/tmp/jl_MnXaua"
pt = tempname()
👀 Reading hidden code
68.0 μs

Versions

👀 Reading hidden code
161 μs
installed = keys(ctx.env.project.deps)
👀 Reading hidden code
23.3 μs

👀 Reading hidden code
64.3 μs
get_installed_version (generic function with 1 method)
function get_installed_version(ctx, pkg_name)
if pkg_name ∈ stdlibs
"stdlib"
else
entry = get_manifest_entry(ctx, pkg_name)
entry.version
end
end
👀 Reading hidden code
603 μs
Dict(x => get_installed_version(ctx, x) for x in installed)
👀 Reading hidden code
65.5 ms
Error message

Not found

Stack trace

Here is what happened, the most recent locations are first:

  1. error(s::String)
  2. getfirst(f::Main.workspace#2.var"#7#8"{String}, xs::Base.ValueIterator{Dict{Base.UUID, Pkg.Types.PackageEntry}})
    		end	end	error("Not found")end
  3. Show more...
get_installed_version(ctx, "SpecialFunctions")
👀 Reading hidden code
---

Stdlibs

👀 Reading hidden code
158 μs
👀 Reading hidden code
4.9 ms

👀 Reading hidden code
64.0 μs